// pages/cart/cart.js
let promise = require('../../utils/promise')
let api = require('../../utils/api')
Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		result: [], //result存放被选中了的checked项的name的属性,里面放对象
		// checked: true,
		cartList: [],
		cartTotal: {},
		isEditing: false,
		checkedAll: null, //全选

	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (options) {
		promise.fetchTime({
			url: api.CartList
		}).then(res => {
			// 渲染单选按钮
			this.toSetData(res)
		}).catch(res => {
			console.log(res);
		})
	},
	//封装相同数据的代码--先放加载进来的代码
	toSetData(res) {
		if (res.statusCode === 200) {
			console.log(res.data.data)
			let cartList = res.data.data.cartList
			let cartTotal = res.data.data.cartTotal
			//选项组的渲染
			//1.根据每一项目商品数据的checked，来给this.data.result数组添加内容
			cartList.map((item) => {
				console.log(item)
				if (item.checked) {
					this.data.result.push(item.id + '')
					// this.data.result.push(String(item.id))
					this.setData({
						result: [...new Set(this.data.result)],
						//单选按钮渲染数据去重
					})
				}
				// 简写：
				// item.checked?this.data.result.push(String(item.id)):''
			})
			console.log(this.data.result);
			//这个数据需要做数据去重
			let result = this.data.result
			let checkedAll = (result.length === cartList.length)
			//  console.log(checkedAll) true
			this.setData({
				cartList,
				cartTotal,
				result, //单选按钮渲染
				checkedAll, //全选按钮的渲染
			})
		}
	},

	//点击编辑isEditing
	isEditing() {
		let isEditing = this.data.isEditing
		this.setData({
			isEditing: !isEditing
		})
	},
	//单选
	itemChecked(e) {
		if (this.data.isEditing) return;
		//点击每一项发请求
		// console.log(e.currentTarget.dataset.item)
		let item = e.currentTarget.dataset.item
		promise.fetchTime({
			url: api.CartChecked,
			data: {
				isChecked: item.checked === 1 ? '0' : '1',
				productIds: item.product_id.toString()
			},
			method: 'post'
		}).then(res => {
			console.log(res)
			this.toSetData(res)
		})
	},
	//这里的代码是点击单选按钮的效果，重新更新result
	onChange(event) {
		console.log(event)
		this.setData({
			result: event.detail
		});
	},
	//全选
	checkedAll(e) {
		if (this.data.isEditing) return;
		//这里需要获取item.checked,不能通过data-item事件传值
		let productIds = this.data.cartList.map((item) => {
			return item.product_id;
		})
		promise.fetchTime({
			url: api.CartChecked,
			data: {
				isChecked: e.detail === false ? '0' : '1',
				productIds: productIds.join()
			},
			method: 'post'
		}).then(res => {
			//成功之后单选切换状态
			this.setData({
				result: [],
				checkedAll: e.detail,
			})
			this.toSetData(res)
			// this.itemChecked(e)
			//成功之后全选切换状态
		})
	},
	//Stepper步进器
	myStepper(event) {
		//console.log(event.currentTarget.dataset.index)  //index
		let index = event.currentTarget.dataset.index
		//console.log(event.detail) //item.number
		// let number=event.detail
		// console.log(event.currentTarget.dataset.item)
		let item = event.currentTarget.dataset.item;
		promise.fetchTime({
			url: api.CartUpdate,
			data: {
				goodsId: item.goods_id,
				id: item.id,
				number: item.number,
				productId: item.product_id,
			},
			method: 'post'
		}).then(res => {
			//还得跟后台反映item.num的变化
			let cartList = res.data.data.cartList
			console.log(cartList[ 0].number)
			cartList[0].number = event.detail
			this.setData({
				cartList: cartList //这里直接更新数组，就会更新里面对应的item.number
			})
			//成功之后单选切换状态
			this.toSetData(res)

		})
	},

	//删除购物车
	cartListDel(e) {
		// console.log(e.currentTarget.dataset.product_id)
		let product_id = e.currentTarget.dataset.product_id
		promise.fetchTime({
			url: api.CartDelete,
			data: {
				productIds: product_id.toString(),
			},
			method: 'post'
		}).then(res => {
			//成功之后单选切换状态
			this.toSetData(res)
		})
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {
		this.getTabBar().setData({
			active: 3 //0 1 2 3 4
		})
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function () {

	}
})